//缓存工具类 浏览器中管理本地存储
enum CacheType {
  local,
  session
}
class Cache {
  storage: Storage //存储对象

  //构造函数，根据类型选择存储方式
  constructor(type: CacheType) {
    this.storage = type === CacheType.local ? localStorage : sessionStorage
  }

  //设置缓存
  setCache(key: string, value: any) {
    this.storage.setItem(key, JSON.stringify(value))
  }

  //获取缓存
  getCache(key: string) {
    const value = this.storage.getItem(key)
    if (value) {
      return JSON.parse(value)
    }
  }

  //删除指定缓存
  removeCache(key: string) {
    this.storage.removeItem(key)
  }

  //清空所有缓存
  clearCache() {
    this.storage.clear()
  }
}

//实例化使用
const localCache = new Cache(CacheType.local)
const sessionCache = new Cache(CacheType.session)
export { localCache, sessionCache }
